Various embodiments described herein relate to computer systems, methods and program products and, more particularly, to virtualization of computer systems, methods and program products.
In computer technology, services are unassociated, loosely coupled units of functionality that are self-contained. Composite applications are software programs that are constructed leveraging capabilities provided by services. Services expose Application Programming Interfaces (APIs), which define the interaction between a service and a consuming composite application (the “application”). The API may be related to a software library where the API describes the expected behavior while the library is an actual implementation of this set of rules. The API can also be related to a software framework that can be based on several libraries implementing several APIs, but unlike the normal use of an API, the access to the behavior built into the framework is mediated by extending its content with new classes plugged into the framework itself. The API may also include other types of interface protocol specifications. The capability exposed by the service via the API can be referred to as the “API implementation” or simply as the “service”.
In developing the application, it may be desirable to begin the testing and simulation of the application before all of the dependent services are fully developed and/or in situations where it may not be practical to test using certain components. In these environments, service virtualization, also referred to as “API virtualization” or simply as “virtualization”, may be used to simulate an API implementation (service) and thereby create a virtualized API implementation. Testing and simulation can be performed on various parts of the application before all parts are fully developed. Service virtualization can emulate the behavior of dependent (e.g. third party, evolving and/or not implemented) services that are used to exercise the application for development or testing purposes.